diff --git a/django/db/models/fields/files.py b/django/db/models/fields/files.py
index e10a5bb6d9..d41b0e100a 100644
--- a/django/db/models/fields/files.py
+++ b/django/db/models/fields/files.py
@@ -278,7 +278,9 @@ class FileField(Field):
         if kwargs.get("max_length") == 100:
             del kwargs["max_length"]
         kwargs['upload_to'] = self.upload_to
-        if self.storage is not default_storage:
+        if callable(self.storage):
+            kwargs['storage'] = self.storage
+        elif self.storage is not default_storage:
             kwargs['storage'] = self.storage
         return name, path, args, kwargs
 
